// 封装axios
// 1.使用create方法实例化
// 1.基地址baseURL  2.接口超时

// 2.请求拦截器
// 拿到token,注入到request headers
// 很多接口都用,token统一注入

// 3.响应拦截器
// 1.token失效 401跳转到登录页
// 2.人资 后端不是以正常的http 200作为接口成功的标识,而是以一个自定义的字段
// success:true
// if(response.success){return response}
// else (return Promise.reject(error))

// 3.无感知切换token(优化层面的东西不是必须的)
import axios from 'axios'
// baseURL 超时时间配置
const instance = axios.create({})

// 全局注入token
instance.interceptors.request.use(config => {
  return config
}, e => Promise.reject(e))

// 处理返回数据 token失效跳回到登录页
instance.interceptors.response.use(
  (response) => {
    return response
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 封装接口
// reqData:Obj 接口参数
function request (url, method, reqData) {
  return instance({
    url,
    method,
    [method.toUpperCase() === 'GET' ? 'params' : 'data']: reqData
  })
}
export default request
